/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * MenuPrincipal.java
 *
 * Created on 16/07/2011, 23:44:06
 */

package ventanas;

import conexiones.AdministradorDeConexiones;
import dao.FuncionesDao;
import java.sql.Connection;
import java.util.logging.Level;
import java.util.logging.Logger;
import modelo.Usuario;

/**
 *
 * @author Cristian Perez
 */
public final class MenuPrincipal extends javax.swing.JFrame {
    
    private static Usuario usuarioLogueado = null;
    private Connection conn = null;

    /**
     * @return the usuarioLogueado
     */
    public static Usuario getUsuarioLogueado() {
        return usuarioLogueado;
    }

    /**
     * @param aUsuarioLogueado the usuarioLogueado to set
     */
    public  void setUsuarioLogueado(Usuario aUsuarioLogueado) {
        usuarioLogueado = aUsuarioLogueado;
    }

    /** Creates new form MenuPrincipal */
    public MenuPrincipal() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        MenuOpciones = new javax.swing.JMenuBar();
        jMenuArticulos = new javax.swing.JMenu();
        jMenuArtConsultas = new javax.swing.JMenuItem();
        jMenu6 = new javax.swing.JMenu();
        jMenuRubConsultas = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        JMenuVentas = new javax.swing.JMenuItem();
        jMenuProveedores = new javax.swing.JMenu();
        jMenuProvConsultas = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();
        jMenuCajaDiaria = new javax.swing.JMenuItem();
        jMenuUsuarios = new javax.swing.JMenu();
        jMenuUsrConsultas = new javax.swing.JMenuItem();
        JMenuModificarDatos = new javax.swing.JMenuItem();
        jMenuModifContraseña = new javax.swing.JMenuItem();
        jMenuPerfiles = new javax.swing.JMenu();
        jMenuPerfConsultas = new javax.swing.JMenuItem();
        jMenu4 = new javax.swing.JMenu();
        jMenuSalir = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("MENU PRINCIPAL");
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });

        jPanel1.setBackground(new java.awt.Color(204, 153, 255));
        jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 873, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 434, Short.MAX_VALUE)
        );

        MenuOpciones.setBackground(new java.awt.Color(255, 255, 255));
        MenuOpciones.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        MenuOpciones.setFont(new java.awt.Font("Segoe UI", 1, 14));

        jMenuArticulos.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jMenuArticulos.setText("Articulos");
        jMenuArticulos.setFont(new java.awt.Font("Tahoma", 1, 16));

        jMenuArtConsultas.setFont(new java.awt.Font("Tahoma", 3, 14));
        jMenuArtConsultas.setText("Consultas");
        jMenuArtConsultas.setName("jMenuArtConsultas"); // NOI18N
        jMenuArtConsultas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuArtConsultasActionPerformed(evt);
            }
        });
        jMenuArticulos.add(jMenuArtConsultas);

        MenuOpciones.add(jMenuArticulos);

        jMenu6.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jMenu6.setText("Rubros");
        jMenu6.setFont(new java.awt.Font("Tahoma", 1, 16));

        jMenuRubConsultas.setFont(new java.awt.Font("Tahoma", 3, 14));
        jMenuRubConsultas.setText("Consultas");
        jMenuRubConsultas.setName("jMenuRubConsultas"); // NOI18N
        jMenuRubConsultas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuRubConsultasActionPerformed(evt);
            }
        });
        jMenu6.add(jMenuRubConsultas);

        MenuOpciones.add(jMenu6);

        jMenu2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jMenu2.setText("Ventas");
        jMenu2.setFont(new java.awt.Font("Tahoma", 1, 16));

        JMenuVentas.setFont(new java.awt.Font("Tahoma", 3, 14));
        JMenuVentas.setText("Venta");
        JMenuVentas.setName("JMenuVentas"); // NOI18N
        JMenuVentas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JMenuVentasActionPerformed(evt);
            }
        });
        jMenu2.add(JMenuVentas);

        MenuOpciones.add(jMenu2);

        jMenuProveedores.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jMenuProveedores.setText("Proveedores");
        jMenuProveedores.setFont(new java.awt.Font("Tahoma", 1, 16));
        jMenuProveedores.setName("jMenuProveedores"); // NOI18N
        jMenuProveedores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuProveedoresActionPerformed(evt);
            }
        });

        jMenuProvConsultas.setFont(new java.awt.Font("Tahoma", 3, 14));
        jMenuProvConsultas.setText("Consultas");
        jMenuProvConsultas.setName("jMenuProvConsultas"); // NOI18N
        jMenuProvConsultas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuProvConsultasActionPerformed(evt);
            }
        });
        jMenuProveedores.add(jMenuProvConsultas);

        MenuOpciones.add(jMenuProveedores);

        jMenu3.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jMenu3.setText("Caja");
        jMenu3.setFont(new java.awt.Font("Tahoma", 1, 16));

        jMenuCajaDiaria.setFont(new java.awt.Font("Tahoma", 3, 14));
        jMenuCajaDiaria.setText("Caja Diaria");
        jMenuCajaDiaria.setName("jMenuCajaDiaria"); // NOI18N
        jMenuCajaDiaria.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuCajaDiariaActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuCajaDiaria);

        MenuOpciones.add(jMenu3);

        jMenuUsuarios.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jMenuUsuarios.setText("Usuarios");
        jMenuUsuarios.setFont(new java.awt.Font("Tahoma", 1, 16)); // NOI18N
        jMenuUsuarios.setName("jMenuUsuarios"); // NOI18N

        jMenuUsrConsultas.setFont(new java.awt.Font("Tahoma", 3, 14));
        jMenuUsrConsultas.setText("Consultas");
        jMenuUsrConsultas.setName("jMenuUsrConsultas"); // NOI18N
        jMenuUsrConsultas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuUsrConsultasActionPerformed(evt);
            }
        });
        jMenuUsuarios.add(jMenuUsrConsultas);

        JMenuModificarDatos.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
        JMenuModificarDatos.setText("Modificar Datos");
        JMenuModificarDatos.setName("JMenuModificarDatos"); // NOI18N
        JMenuModificarDatos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JMenuModificarDatosActionPerformed(evt);
            }
        });
        jMenuUsuarios.add(JMenuModificarDatos);
        JMenuModificarDatos.getAccessibleContext().setAccessibleName("JMenuModificarDatos");

        jMenuModifContraseña.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
        jMenuModifContraseña.setText("Modificar Contraseña");
        jMenuModifContraseña.setName("jMenuModifContraseña"); // NOI18N
        jMenuModifContraseña.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuModifContraseñaActionPerformed(evt);
            }
        });
        jMenuUsuarios.add(jMenuModifContraseña);

        MenuOpciones.add(jMenuUsuarios);

        jMenuPerfiles.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jMenuPerfiles.setText("Perfiles");
        jMenuPerfiles.setFont(new java.awt.Font("Tahoma", 1, 16));
        jMenuPerfiles.setName("jMenuPerfiles"); // NOI18N

        jMenuPerfConsultas.setFont(new java.awt.Font("Tahoma", 3, 14));
        jMenuPerfConsultas.setText("Consultas");
        jMenuPerfConsultas.setName("jMenuPerfConsultas"); // NOI18N
        jMenuPerfConsultas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuPerfConsultasActionPerformed(evt);
            }
        });
        jMenuPerfiles.add(jMenuPerfConsultas);

        MenuOpciones.add(jMenuPerfiles);

        jMenu4.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jMenu4.setText("Salir");
        jMenu4.setFont(new java.awt.Font("Tahoma", 1, 16));

        jMenuSalir.setFont(new java.awt.Font("Tahoma", 3, 14));
        jMenuSalir.setText("Salir del Sistema");
        jMenuSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuSalirActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuSalir);

        MenuOpciones.add(jMenu4);

        setJMenuBar(MenuOpciones);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(20, 20, 20))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-911)/2, (screenSize.height-513)/2, 911, 513);
    }// </editor-fold>//GEN-END:initComponents

    private void jMenuSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuSalirActionPerformed
        // TODO add your handling code here:
        this.dispose();
    }//GEN-LAST:event_jMenuSalirActionPerformed

    private void jMenuArtConsultasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuArtConsultasActionPerformed
        // TODO add your handling code here:
        ABMArticulos ventaABMArt = new ABMArticulos(this, true);
        ventaABMArt.setVisible(true);
    }//GEN-LAST:event_jMenuArtConsultasActionPerformed

    private void jMenuUsrConsultasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuUsrConsultasActionPerformed
        // TODO add your handling code here: 
            ABMUsuarios ventaABMusr = new ABMUsuarios(this,true);
            ventaABMusr.setUsuarioLogueado(this.getUsuarioLogueado());
            ventaABMusr.setVisible(true);
    }//GEN-LAST:event_jMenuUsrConsultasActionPerformed

    private void jMenuPerfConsultasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuPerfConsultasActionPerformed
        // TODO add your handling code here:
        ABMPerfiles ventaABMperfiles = new ABMPerfiles(this, true);
        ventaABMperfiles.setUsuarioLogueado(this.getUsuarioLogueado());
        ventaABMperfiles.setVisible(true);
    }//GEN-LAST:event_jMenuPerfConsultasActionPerformed

    private void jMenuRubConsultasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuRubConsultasActionPerformed
        // TODO add your handling code here:
        ABMRubros ventaABMrubros = new ABMRubros(this, true);
        ventaABMrubros.setVisible(true);
    }//GEN-LAST:event_jMenuRubConsultasActionPerformed

    private void JMenuVentasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JMenuVentasActionPerformed
        // TODO add your handling code here:
        VentanaVentas windVentas = new VentanaVentas(this, true);
        windVentas.setVisible(true);
    }//GEN-LAST:event_JMenuVentasActionPerformed

    private void jMenuProveedoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuProveedoresActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jMenuProveedoresActionPerformed

    private void jMenuProvConsultasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuProvConsultasActionPerformed
        // TODO add your handling code here:
        ABMProveedores ventaProv = new ABMProveedores(this, true);
        ventaProv.setVisible(true);
    }//GEN-LAST:event_jMenuProvConsultasActionPerformed

    private void jMenuCajaDiariaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuCajaDiariaActionPerformed
        // TODO add your handling code here:
        CajaDiaria ventaCaja = new CajaDiaria(this, true);
        ventaCaja.setVisible(true);
    }//GEN-LAST:event_jMenuCajaDiariaActionPerformed

    private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        int idPerfil = usuarioLogueado.getIdPerfil();
        try {
            conn = AdministradorDeConexiones.obtenerConexion();
            int largo = MenuOpciones.getMenuCount() - 2;
            for(int i=0;i <= largo;i++){
                int length = MenuOpciones.getMenu(i).getMenuComponentCount() - 1;
                for(int j=0;j <= length;j++){
                  boolean visible = FuncionesDao.getInstance().funcionPermitida(conn,idPerfil,MenuOpciones.getMenu(i).getItem(j).getName());
                  if(!visible){
                    MenuOpciones.getMenu(i).remove(MenuOpciones.getMenu(i).getItem(j));
                    length--;
                  }
                }
                if(MenuOpciones.getMenu(i).getMenuComponentCount() == 0){
                    MenuOpciones.getMenu(i).setVisible(false);
                }
            }
        } catch (Exception ex) {
            Logger.getLogger(MenuPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }   
    }//GEN-LAST:event_formWindowOpened

    private void JMenuModificarDatosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JMenuModificarDatosActionPerformed
           try {
                conn = AdministradorDeConexiones.obtenerConexion();
                ModificarUsuario modificarUsuario = new ModificarUsuario(this,true);
                modificarUsuario.mostrarDatosUsuario(usuarioLogueado);
                modificarUsuario.setVisible(true);
            } catch (Exception ex) {
                Logger.getLogger(ABMUsuarios.class.getName()).log(Level.SEVERE, null, ex);
            }      

    }//GEN-LAST:event_JMenuModificarDatosActionPerformed

    private void jMenuModifContraseñaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuModifContraseñaActionPerformed
            try {
                conn = AdministradorDeConexiones.obtenerConexion();
                ModificarContrasenaUsuario modifPass = new ModificarContrasenaUsuario(this,true);
                modifPass.mostrarUsuario(usuarioLogueado);
                modifPass.setVisible(true);
            } catch (Exception ex) {
                Logger.getLogger(ABMUsuarios.class.getName()).log(Level.SEVERE, null, ex);
            }
    }//GEN-LAST:event_jMenuModifContraseñaActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem JMenuModificarDatos;
    private javax.swing.JMenuItem JMenuVentas;
    private javax.swing.JMenuBar MenuOpciones;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenu jMenu6;
    private javax.swing.JMenuItem jMenuArtConsultas;
    private javax.swing.JMenu jMenuArticulos;
    private javax.swing.JMenuItem jMenuCajaDiaria;
    private javax.swing.JMenuItem jMenuModifContraseña;
    private javax.swing.JMenuItem jMenuPerfConsultas;
    private javax.swing.JMenu jMenuPerfiles;
    private javax.swing.JMenuItem jMenuProvConsultas;
    private javax.swing.JMenu jMenuProveedores;
    private javax.swing.JMenuItem jMenuRubConsultas;
    private javax.swing.JMenuItem jMenuSalir;
    private javax.swing.JMenuItem jMenuUsrConsultas;
    private javax.swing.JMenu jMenuUsuarios;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration//GEN-END:variables

}
